The present invention relates generally to network switching, and more specifically, to synchronizing multiple virtual output queue flows to facilitate efficient multicast message forwarding.
Efficient support of multicast traffic by switches and routers has become increasingly important, including for applications such as video or other content broadcasting, ticket distribution in financial markets, disaster recovery, and distributed multimedia systems. Various solutions have been developed in this regard.
In fanout splitting, an input generally sends a separate copy of the packet payload to each destination. However, if the same packet is granted by multiple destinations at the same time, then the input may send a single copy to that group of destinations, but additional copies of the payload must be sent for remaining destinations.
In pure non-fanout splitting, an input generally transmits the payload of each packet, together with a list of the targeted destinations, only once when all destinations are able receive the packet. In this type of multicast packet switching protocol, the switch is responsible to replicate the payload to all of its destinations. Thus, the switch fabric makes new copies of the payload only where destinations diverge, in an attempt to save bandwidth by transferring a packet's payload only once on the common links of the path segments that are shared by all destinations.
Scheduling solutions are available that use request-grant schemes. In order to transmit a message, the hosting queue must first issue a request and receive a grant. Solutions are available that maintain a single first-in-first-out (FIFO) queue at each input to store arriving multicast messages as they await a grant. However, such FIFO systems may experience severe performance problems due to head of line (HOL) blocking when a grant is delayed. The time it takes for a queue to receive the grant may depend on the demand level at the targeted destination, as well as the physical distance between the input port and the location of the arbiter.
Thus, virtual output queues (VOQs), each corresponding to a different output port, may be implemented. However, non-fanout splitting solutions cannot be easily implemented in virtual output queue systems. Different queues may experience different request-grant propagation delays. Generally, in order for a non-fanout splitting injection occur, all corresponding packet copies must be located at the HOL position of their queue, and all packet copies must hold grants/credits from the corresponding destination arbiter.